﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Net;
using System.Net.Sockets;

namespace C_线程
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Task task1 = Task.Run(() => Add());
            //Task<int> task2 = Task.Run(() => Square(7));
            //Task<int> task3 = Task.Run(() => Factorial(5));
            //task2.ContinueWith(x=> { Console.WriteLine("平方的结果：" + x.Result); });     
            //task3.ContinueWith(x=> { Console.WriteLine("平方的结果：" + x.Result); });

            //Task.WaitAll(task1, task2, task3);

            // 创建IP地址对象，指定服务器IP（此处为示例IP）
            IPAddress ip = IPAddress.Parse("10.237.125.197");

            // 创建网络端点对象，绑定IP地址和端口号（端口9999）
            IPEndPoint iPEndPoint = new IPEndPoint(ip, 9999);

            // 创建TCP类型的Socket对象
            // AddressFamily.InterNetwork：使用IPv4地址
            // SocketType.Stream：流式套接字（用于TCP协议）
            // ProtocolType.Tcp：指定TCP协议
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // 将Socket绑定到指定的IP和端口
            serverSocket.Bind(iPEndPoint);

            // 开始监听客户端连接，参数0表示不限制等待队列长度
            serverSocket.Listen(0);

            // 输出服务器启动信息
            Console.WriteLine("服务器启动成功，等待客户端接入....");

            // 阻塞当前线程，等待客户端连接，连接成功后返回客户端Socket对象
            Socket clientSocket = serverSocket.Accept();

            // 输出客户端连接成功信息
            Console.WriteLine("有一个客户端连接成功！");

            // 创建缓冲区数组，用于接收客户端发送的数据（缓冲区大小1024字节）
            byte[] buffer = new byte[1024];

            // 接收客户端发送的数据，数据会存入缓冲区（此处简化处理，未处理实际接收长度）
            clientSocket.Receive(buffer);

            // 将接收到的字节数据转换为UTF8编码的字符串
            string message = Encoding.UTF8.GetString(buffer);

            // 输出接收到的客户端数据
            Console.WriteLine("接收到客户端的请求数据: " + message);

            // 向客户端发送响应数据：将字符串转换为UTF8字节数组后发送
            clientSocket.Send(Encoding.UTF8.GetBytes("这是服务器的响应数据: ASDFGHGHFDS"));

            // 关闭客户端Socket连接
            clientSocket.Close();

            // 关闭服务器Socket
            serverSocket.Close();
        }
        //static void Add()
        //{
        //    Console.WriteLine("1");
        //    int result = 3 + 4;
        //    Console.WriteLine("1 3 + 4 = " + result);

        //}

        //static int Square(int x)
        //{
        //    Console.Write("2");
        //    return x * x;
        //}

        //static int Factorial(int y)
        //{
        //    Console.WriteLine("3");
        //    int result = 1;
        //    for (int i = 1; i <= y; i++)
        //    {
        //        result *= i;
        //    }
        //    return result;
        //}
    }
}
